from django.db import models

# Create your models here.
'''
    新闻表 newsinfo:
        ID: 主键
        title: 标题   字符串
        content: 新闻内容   大文本
        b_data: 新闻日期   日期
        read: 阅读量   整数


    python manager.py shell 在命令行添加数据

    from news2023.models import NewInfo

    NewInfo.objects.all()   查询所有数据

    n1=NewInfo()  新建模型类对象

    数据写入:
        n1.title="2023年10月的新闻" 
        n1.content="今天天气很好,10点25分,2023年10月16日" 
        n1.read=99
        n1.b_data='2023-10-16' 

    res_01=NewInfo.objects.all()[0]   单条数据获取
    res_01.title   单条数据内容查询

    res_01.b_date=date(2023,8,1)    单条数据修改
    res_01.save()    单条数据保存

    res_01.delete()   删除单条数据


    
'''

""" 
class NewInfo(models.Model):
    # 新闻表
    title = models.CharField(max_length=30)
    content = models.TextField()
    b_data = models.DateField()
    read = models.IntegerField() """

'''
# 新闻类型表: 时尚杂志,国际新闻,体育新闻,时尚政治
    new_type 表:
        id: 主键
        name: 类型名称

# 新闻信息表:保存每一篇新闻的相信信息
    newsinfo表:
        id: 主键
        title: 标题
        content: 内容
        read: 阅读数量
        comment: 评论数量




'''


'''
关系字段类型：
1,ForeignKey: 一对多，将字段定义再多的一端中。
    一个一对多的关系，需要两个位置参数：模型相关的类和 on_delete 选项。
    goods = models.ForeignKey('Goods', on_delete=models.CASCADE)

2,ManyToManyField: 多对多，将字段定义在任意一端中。
    user = models.ManyToManyFlied('User', on_delete=models.CASCADE)

3,OneToOneField:一对一，将字段定义在任意一端中。
    user = models.OneToOneField('User', on_delete=models.CASCADE)

4,自关联关系 使用 'self' 指定：
    一对多的自关联：
        bid = models.ForeignKey('self', null=True, blank=True)
    
    多对多的自关联：
        bid = models.ManyToManyField('self', null=True, blank=True)


on_delete 的作用：
    当一个引用的对象被删除时, Django 将模拟 on_delete 参数所指定的 sql 约束的行为。

    CASCAD: 级联删除

    2023年10月18日 11点03分
'''


class NewsType(models.Model):
    #  定义新闻类型的模型类
    # pass
    name = models.CharField(max_length=20, verbose_name='名称', help_text='名称')


class NewsInfo(models.Model):
    #  定义新闻信息的模型类
    title = models.CharField(max_length=100, verbose_name='标题', help_text='标题')
    content = models.TextField(
        max_length=100, verbose_name='新闻内容', help_text='新闻内容')
    read = models.IntegerField(verbose_name='阅读量', help_text='阅读量')
    comment = models.IntegerField(verbose_name='评论数量', help_text='评论数量')

    # 多对多的关系 维护
    type = models.ManyToManyField(
        'NewsType', verbose_name='新闻类型', help_text='新闻类型')


# python manage.py makemigrations
# python manage.py migrate
